﻿using WindMill.Models.Cadastro;
using WindMill.Services;
using System.ComponentModel;
using System.Linq;


namespace WindMill.Models.Controladoria
{
    public partial class BancoAgencia : INotifyPropertyChanged, INotifyPropertyChanging
    {
        private Cidade _cidade = null;

        public Cidade Cidade
        {
            get
            {
                if (CodCidade == null)
                    return null;

                if (_cidade == null || _cidade.Id != CodCidade)
                {
                    var context = OracleConnectionPool.GetPool().GetDbContext<EDMCadastro>() as EDMCadastro;
                    _cidade = context.Cidades.SingleOrDefault(c => c.Id == CodCidade);
                }

                return _cidade;
            }
            set
            {
                OnPropertyChanging("Cidade");
                _cidade = value;
                CodCidade = value != null ? value.Id : (int?) null;
                OnPropertyChanged("Cidade");
            }
        }

        private Estado _estado = null;

        public Estado Estado
        {
            get
            {
                if (CodEstado == null)
                    return null;

                if (_estado == null || _estado.Id != CodEstado)
                {
                    var context = OracleConnectionPool.GetPool().GetDbContext<EDMCadastro>() as EDMCadastro;
                    _estado = context.Estados.SingleOrDefault(c => c.Id == CodEstado);
                }

                return _estado;
            }
            set
            {
                OnPropertyChanging("Estado");
                _estado = value;
                CodEstado = value != null ? value.Id : null;                
                OnPropertyChanged("Estado");
            }
        }




        public event PropertyChangedEventHandler PropertyChanged;

        public void OnPropertyChanged(string property)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(property));
            }
        }

        public event PropertyChangingEventHandler PropertyChanging;

        public void OnPropertyChanging(string property)
        {
            if (PropertyChanging != null)
            {
                PropertyChanging(this, new PropertyChangingEventArgs(property));
            }
        }
    }
}
